const code = -1;
function throwError(ctx, error) {
  const res = {
    success: false,
    code,
  };
  let errorMsg;

  if (error instanceof Error) {
    if (Array.isArray(error.errors)) {
      const errors = error.errors;
      errorMsg = errors[errors.length - 1].message;
    } else {
      errorMsg = error.message;
    }
  } else {
    errorMsg = error;
  }
  const msg = errorMsg || "服务器异常";
  res.message = msg;
  ctx.body = res;
}

module.exports = () => {
  return async function error(ctx, next) {
    try {
      await next();
    } catch (error) {
      ctx.app.emit("error", error, ctx);
      throwError(ctx, error);
    }
  };
};
